package com.chen.array;

public class ArrayTest2 {
    public static void main(String[] args) {
        // 目标，完成数字华容道的初始化和随即乱序。
        start(4);
    }
    public  static void start(int n) {
        // 1.定义一个二维数组存储数字列表。
        int[][] array = new int[n][n];

        // 2.遍历二维数组，给二位数组赋值
        int count = 1;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                array[i][j] = count++;
            }
        }

        printArray(array);

        // 3. 打乱二维数组中的元素
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                // 遍历到的当前位置：array[i][j]
                // 随机的索引位置：m(随机的行) p(随机的列)
                int m = (int)(Math.random() * array.length);
                int p = (int)(Math.random() * array.length);

                // 定义一个临时变量储存m p位置处的数据
                int temp = array[m][p];
                // 将i j位置的数据，赋给m p位置
                array[m][p] = array[i][j];
                // 将m p位置的数据，赋给i j位置
                array[i][j] = temp;
            }

        }
        printArray(array);
    }

    public static void printArray(int[][] array) {
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + "\t");
            }
            System.out.println();
        }
    }

}
